/**
* Copyright (c) By zengqh.
*
* This program is just for fun or demo, in the hope that it  
* will be useful, you can redistribute it and/or modify freely.
*
* Time: 2012/07/11
* File: Rfstd.h
* Blog: http://www.cnblogs.com/zengqh/
**/

#ifndef Rfstd_h__
#define Rfstd_h__


#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <iostream>
#include <vector>
#include <map>
#include <list>
#include <deque>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <algorithm>
#include <functional>

#include "Type.h"
#include "../glm/glm.hpp"
#include "../glm/gtc/matrix_transform.hpp"
#include "../glm/gtc/type_ptr.hpp"

/* assert thing */
#define MY_ASSERT(exp)						{ if (!(exp)) {__asm int 3} }
#ifdef _DEBUG
#define rf_assert							MY_ASSERT
#else
#define rf_assert
#endif

/* safe delete */
#define safe_delete(p)						{ if ((p) != NULL) { delete (p); (p) = NULL; } }
#define safe_delete_array(p)				{ if ((p) != NULL) { delete [] (p); (p) = NULL; } }
#define safe_release(p)						{ if ((p) != NULL) { (p)->Release(); } }



#endif    /* Rfstd_h__ */